#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
typedef struct
{	int head;
	int tail;
    int data[1000];
}list;             
void init(list *s){
	s->head=0;s->tail=0;
}
int Push(list *s,int e){
	s->data[s->tail]=e;
	s->tail++;
	return 0;
}
int Pop(list *s){
	int e=s->data[s->head];
	s->head++;
	return e;
}
int isEmpty(list *s){
	if(s->head==s->tail)
		return 1;
	else
		return 0;
}
int main(){
	int num;
	scanf("%d",num);
	list a,b;
	int x[1000];
	init(&a);init(&b);
	for(int i=0;i<num;i++){
	scanf("%d",x[i]);
	if(x[i]%2==0)
	Push(&b,x[i]);
	else
	Push(&a,x[i]);}

	while(isEmpty(&a)==0||isEmpty(&b)==0){
		if(isEmpty(&a)==0&&isEmpty(&b)==0){
			int e=Pop(&a);
			if(isEmpty(&a)==0){
				int f=Pop(&a);
				int g=Pop(&b);
				if(isEmpty(&a)==1&&isEmpty(&b)==1)
					printf("%d %d %d",e,f,g);
				else
					printf("%d %d %d ",e,f,g);
			}
			else{
				int g=Pop(&b);
			if(isEmpty(&a)==1&&isEmpty(&b)==1)
				printf("%d %d",e,g);
			else
				printf("%d %d ",e,g);
			}
		}
		else if(isEmpty(&a)==0&&isEmpty(&b)==1){
				int e=Pop(&a);
			if(isEmpty(&a)==0){
				int f=Pop(&a);
				if(isEmpty(&a)==1&&isEmpty(&b)==1)
				printf("%d %d",e,f);
				else
				printf("%d %d ",e,f);
			}
			else{
				if(isEmpty(&a)==1&&isEmpty(&b)==1)
					printf("%d",e);
				else
                    printf("%d ",e);
			}
		}
		else if(isEmpty(&a)==1&&isEmpty(&b)==0){
			int g=Pop(&b);
			if(isEmpty(&a)==1&&isEmpty(&b)==1)
				printf("%d",g);
			else
			printf("%d ",g);
	}
return 0;
}
}
//银行业务队列简单模拟